import {
  BwStyleFontWeightEnum,
  BwStyleMarginEnum,
  BwStylePaddingEnum,
  BwStyleAlignItemsEnum,
  BwStyleBorderStyleEnum,
  BwStyleCursorEnum,
  BwStyleDisplayEnum,
  BwStyleFlexDirectionEnum,
  BwStyleFontStyleEnum,
  BwStyleJustifyContentEnum,
  BwStyleTextAlignEnum,
  BwStyleTextDecorationEnum,
  BwStyleFontFamilyEnum,
  BwStyleBackgroundSizeEnum,
  BwStyleBackgroundRepeatEnum,
  BwStyleBackgroundAttachmentEnum,
} from '../enum'

/** 通用渲染样式模型 */
export interface BwStyleFocusProps
  extends BwStyleFocusFontModel,
    BwStyleFocusFlexModel,
    BwStyleFocusMarginModel,
    BwStyleFocusPaddingModel,
    BwStyleFocusBorderModel,
    BwStyleFocusRadiusModel,
    BwStyleFocusShadowModel,
    BwStyleFocusBackgroundModel {
  /** 宽度 */
  focusWidth?: string

  /** 高度 */
  focusHeight?: string

  /** 显示 */
  focusDisplay?: BwStyleDisplayEnum | string

  /** flex-grow */
  focusFlexGrow?: number

  /** 不透明度 */
  focusOpacity?: number

  /** 鼠标手势 */
  focusCursor?: BwStyleCursorEnum
}

/** 字体相关样式 */
export interface BwStyleFocusFontModel {
  /** 字体 */
  focusFontFamily?: BwStyleFontFamilyEnum

  /** 字重 */
  focusFontWeight?: BwStyleFontWeightEnum

  /** 字体样式 */
  focusFontStyle?: BwStyleFontStyleEnum

  /** 颜色 */
  focusColor?: string

  /** 字体大小 */
  focusFontSize?: string

  /** 行高 */
  focusLineHeight?: string

  /** 对齐 */
  focusTextAlign?: BwStyleTextAlignEnum

  /** 修饰 */
  focusTextDecoration?: BwStyleTextDecorationEnum
}

/** 弹性盒子相关样式 */
export interface BwStyleFocusFlexModel {
  /** 主轴方向 */
  focusFlexDirection?: BwStyleFlexDirectionEnum

  /** 侧轴（纵轴）方向上的对齐方式 */
  focusAlignItems?: BwStyleAlignItemsEnum

  /** 主轴上的子元素排列方式 */
  focusJustifyContent?: BwStyleJustifyContentEnum
}

/** 外边距相关样式 */
export interface BwStyleFocusMarginModel {
  /** 左外边距 */
  focusMarginLeft?: BwStyleMarginEnum | string

  /** 上外边距 */
  focusMarginTop?: BwStyleMarginEnum | string

  /** 右外边距 */
  focusMarginRight?: BwStyleMarginEnum | string

  /** 下外边距 */
  focusMarginBottom?: BwStyleMarginEnum | string
}

/** 内边距相关样式 */
export interface BwStyleFocusPaddingModel {
  /** 左内边距 */
  focusPaddingLeft?: BwStylePaddingEnum | string

  /** 上内边距 */
  focusPaddingTop?: BwStylePaddingEnum | string

  /** 右内边距 */
  focusPaddingRight?: BwStylePaddingEnum | string

  /** 下内边距 */
  focusPaddingBottom?: BwStylePaddingEnum | string
}

/** 边框相关样式 */
export interface BwStyleFocusBorderModel {
  /** 边框左 线样式 */
  focusBorderLeftStyle?: BwStyleBorderStyleEnum
  /** 边框左 宽度 */
  focusBorderLeftWidth?: string
  /** 边框左 颜色 */
  focusBorderLeftColor?: string
  /** 边框上 线样式 */
  focusBorderTopStyle?: BwStyleBorderStyleEnum
  /** 边框上 宽度 */
  focusBorderTopWidth?: string
  /** 边框上 颜色 */
  focusBorderTopColor?: string
  /** 边框右 线样式 */
  focusBorderRightStyle?: BwStyleBorderStyleEnum
  /** 边框右 宽度 */
  focusBorderRightWidth?: string
  /** 边框右 颜色 */
  focusBorderRightColor?: string
  /** 边框下 线样式 */
  focusBorderBottomStyle?: BwStyleBorderStyleEnum
  /** 边框下 宽度 */
  focusBorderBottomWidth?: string
  /** 边框下 颜色 */
  focusBorderBottomColor?: string
}

/** 圆角相关样式 */
export interface BwStyleFocusRadiusModel {
  /** 圆角左上角*/
  focusBorderTopLeftRadius?: string

  /** 圆角右上角*/
  focusBorderTopRightRadius?: string

  /** 圆角左下角*/
  focusBorderBottomLeftRadius?: string

  /** 圆角右下角*/
  focusBorderBottomRightRadius?: string
}

/** 阴影相关样式 */
export interface BwStyleFocusShadowModel {
  /** 颜色 */
  focusShadowColor?: string
  /** x轴水平方向偏移量 */
  focusShadowX?: string
  /** y轴竖直方向偏移量 */
  focusShadowY?: string
  /** 阴影模糊半径 */
  focusShadowBlur?: string
  /** 阴影扩展半径 */
  focusShadowSpread?: string
}

/** 背景相关样式 */
export interface BwStyleFocusBackgroundModel {
  /** 背景颜色 */
  focusBackgroundColor?: string

  /** 背景图片 */
  focusBackgroundImage?: string

  /** 背景定位 X轴 */
  focusBackgroundPositionX?: string

  /** 背景定位 Y轴 */
  focusBackgroundPositionY?: string

  /** 背景大小 */
  focusBackgroundSize?: BwStyleBackgroundSizeEnum

  /** 背景大小 宽 */
  focusBackgroundSizeWidth?: string

  /** 背景大小 高 */
  focusBackgroundSizeHeight?: string

  /** 背景平铺 */
  focusBackgroundRepeat?: BwStyleBackgroundRepeatEnum

  /** 背景固定 */
  focusBackgroundAttachment?: BwStyleBackgroundAttachmentEnum
}
